home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QD3DGroup.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  15.5 KB  |  496 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGroup.p
  3.  
  4.      Contains:    Q3Group methods        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3DGroup;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3DGROUP__}
  28. {$SETC __QD3DGROUP__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DGroupIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __QD3D__}
  35. {$I QD3D.p}
  36. {$ENDC}
  37.  
  38.  
  39. {$PUSH}
  40. {$ALIGN POWER}
  41. {$LibExport+}
  42.  
  43. {*****************************************************************************
  44.  **                                                                             **
  45.  **                            Group Typedefs                                     **
  46.  **                                                                             **
  47.  ****************************************************************************}
  48. {
  49.  * These flags affect how a group is traversed
  50.  * They apply to when a group is "drawn", "picked", "bounded", "written"
  51.  }
  52.  
  53. TYPE
  54.     TQ3DisplayGroupStateMasks     = LONGINT;
  55. CONST
  56.     kQ3DisplayGroupStateNone    = {TQ3DisplayGroupStateMasks}0;
  57.     kQ3DisplayGroupStateMaskIsDrawn = {TQ3DisplayGroupStateMasks}$01;
  58.     kQ3DisplayGroupStateMaskIsInline = {TQ3DisplayGroupStateMasks}$02;
  59.     kQ3DisplayGroupStateMaskUseBoundingBox = {TQ3DisplayGroupStateMasks}$04;
  60.     kQ3DisplayGroupStateMaskUseBoundingSphere = {TQ3DisplayGroupStateMasks}$08;
  61.     kQ3DisplayGroupStateMaskIsPicked = {TQ3DisplayGroupStateMasks}$10;
  62.     kQ3DisplayGroupStateMaskIsWritten = {TQ3DisplayGroupStateMasks}$20;
  63.  
  64.  
  65. TYPE
  66.     TQ3DisplayGroupState                = UInt32;
  67. {*****************************************************************************
  68.  **                                                                             **
  69.  **                    Group Routines (apply to all groups)                     **
  70.  **                                                                             **
  71.  ****************************************************************************}
  72. FUNCTION Q3Group_New: TQ3GroupObject; C;
  73. FUNCTION Q3Group_GetType(group: TQ3GroupObject): LONGINT; C;
  74. FUNCTION Q3Group_AddObject(group: TQ3GroupObject; object: TQ3Object): TQ3GroupPosition; C;
  75. FUNCTION Q3Group_AddObjectBefore(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  76. FUNCTION Q3Group_AddObjectAfter(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  77. FUNCTION Q3Group_GetPositionObject(group: TQ3GroupObject; position: TQ3GroupPosition; VAR object: TQ3Object): TQ3Status; C;
  78. FUNCTION Q3Group_SetPositionObject(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3Status; C;
  79. FUNCTION Q3Group_RemovePosition(group: TQ3GroupObject; position: TQ3GroupPosition): TQ3Object; C;
  80. FUNCTION Q3Group_GetFirstPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  81. FUNCTION Q3Group_GetLastPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  82. FUNCTION Q3Group_GetNextPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  83. FUNCTION Q3Group_GetPreviousPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  84. FUNCTION Q3Group_CountObjects(group: TQ3GroupObject; VAR nObjects: UInt32): TQ3Status; C;
  85. FUNCTION Q3Group_EmptyObjects(group: TQ3GroupObject): TQ3Status; C;
  86. {
  87.  *     Typed Access
  88.  }
  89. FUNCTION Q3Group_GetFirstPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  90. FUNCTION Q3Group_GetLastPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  91. FUNCTION Q3Group_GetNextPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  92. FUNCTION Q3Group_GetPreviousPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  93. FUNCTION Q3Group_CountObjectsOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR nObjects: UInt32): TQ3Status; C;
  94. FUNCTION Q3Group_EmptyObjectsOfType(group: TQ3GroupObject; isType: TQ3ObjectType): TQ3Status; C;
  95. {
  96.  *    Determine position of objects in a group
  97.  }
  98. FUNCTION Q3Group_GetFirstObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  99. FUNCTION Q3Group_GetLastObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  100. FUNCTION Q3Group_GetNextObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  101. FUNCTION Q3Group_GetPreviousObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  102.  
  103. {*****************************************************************************
  104.  **                                                                             **
  105.  **                            Group Subclasses                                 **
  106.  **                                                                             **
  107.  ****************************************************************************}
  108. FUNCTION Q3LightGroup_New: TQ3GroupObject; C;
  109. FUNCTION Q3InfoGroup_New: TQ3GroupObject; C;
  110. {*****************************************************************************
  111.  **                                                                             **
  112.  **                        Display Group Routines                                 **
  113.  **                                                                             **
  114.  ****************************************************************************}
  115. FUNCTION Q3DisplayGroup_New: TQ3GroupObject; C;
  116. FUNCTION Q3DisplayGroup_GetType(group: TQ3GroupObject): LONGINT; C;
  117. FUNCTION Q3DisplayGroup_GetState(group: TQ3GroupObject; VAR state: TQ3DisplayGroupState): TQ3Status; C;
  118. FUNCTION Q3DisplayGroup_SetState(group: TQ3GroupObject; state: TQ3DisplayGroupState): TQ3Status; C;
  119. FUNCTION Q3DisplayGroup_Submit(group: TQ3GroupObject; view: TQ3ViewObject): TQ3Status; C;
  120. {*****************************************************************************
  121.  **                                                                             **
  122.  **        Ordered Display Group                                                  **
  123.  **                                                                             **
  124.  **        Ordered display groups keep objects in order by the type of object:     **
  125.  **                                                                             **
  126.  **        1    kQ3ShapeTypeTransform                                             **
  127.  **        2    kQ3ShapeTypeStyle                                                  **
  128.  **        3    kQ3SetTypeAttribute                                                  **
  129.  **        4    kQ3ShapeTypeShader                                                  **
  130.  **        5    kQ3ShapeTypeCamera                                                  **
  131.  **        6    kQ3ShapeTypeLight                                                  **
  132.  **        7    kQ3ShapeTypeGeometry                                             **
  133.  **        8    kQ3ShapeTypeGroup                                                 **            
  134.  **        9    kQ3ShapeTypeUnknown                                                 **
  135.  **                                                                             **
  136.  **        Within a type, you are responsible for keeping things in order.         **
  137.  **                                                                             **
  138.  **        You may access and/or manipulate the group using the above types      **
  139.  **        (fast), or you may use any parent or leaf class types (slower).         **
  140.  **                                                                             **
  141.  **        Additional types will be added as functionality grows.                 **
  142.  **                                                                             **
  143.  **        The group calls which access by type are much faster for ordered     ** 
  144.  **        display group for the types above.                                     **
  145.  **                                                                             **
  146.  **        N.B. In QuickDraw 3D 1.0 Lights and Cameras are a no-op when drawn.     **
  147.  **                                                                             **
  148.  ****************************************************************************}
  149. FUNCTION Q3OrderedDisplayGroup_New: TQ3GroupObject; C;
  150. {*****************************************************************************
  151.  **                                                                             **
  152.  **        IO Proxy Display Group                                                  **
  153.  **                                                                             **
  154.  **        IO Proxy display groups are used to place more than one              **
  155.  **        representation of an object in a metafile. For example, if you know     **
  156.  **        another program does not understand NURBPatches but does understand  **
  157.  **        Meshes, you may place a mesh and a NURB Patch in an IO Proxy Group,  **
  158.  **        and the reading program will select the desired representation.         **
  159.  **                                                                             **
  160.  **        Objects in an IO Proxy Display Group are placed in their preferencial**
  161.  **        order, with the FIRST object being the MOST preferred, the LAST      **
  162.  **        object the least preferred.                                             **
  163.  **                                                                             **
  164.  **        The behavior of an IO Proxy Display Group is that when drawn/picked/ **
  165.  **        bounded, the first object in the group that is not "Unknown" is used,**
  166.  **        and the other objects ignored.                                         **
  167.  **                                                                             **
  168.  ****************************************************************************}
  169. FUNCTION Q3IOProxyDisplayGroup_New: TQ3GroupObject; C;
  170. {*****************************************************************************
  171.  **                                                                             **
  172.  **                        Group Extension Definitions                             **
  173.  **                                                                             **
  174.  ****************************************************************************}
  175. {
  176.  *    Searching methods - OPTIONAL
  177.  }
  178.  
  179. CONST
  180.     kQ3XMethodType_GroupAcceptObject = 'gaco';
  181.  
  182.  
  183. TYPE
  184. {$IFC TYPED_FUNCTION_POINTERS}
  185.     TQ3XGroupAcceptObjectMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object): TQ3Boolean; C;
  186. {$ELSEC}
  187.     TQ3XGroupAcceptObjectMethod = ProcPtr;
  188. {$ENDC}
  189.  
  190.  
  191. CONST
  192.     kQ3XMethodType_GroupAddObject = 'gado';
  193.  
  194.  
  195. TYPE
  196. {$IFC TYPED_FUNCTION_POINTERS}
  197.     TQ3XGroupAddObjectMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object): TQ3GroupPosition; C;
  198. {$ELSEC}
  199.     TQ3XGroupAddObjectMethod = ProcPtr;
  200. {$ENDC}
  201.  
  202.  
  203. CONST
  204.     kQ3XMethodType_GroupAddObjectBefore = 'gaob';
  205.  
  206.  
  207. TYPE
  208. {$IFC TYPED_FUNCTION_POINTERS}
  209.     TQ3XGroupAddObjectBeforeMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  210. {$ELSEC}
  211.     TQ3XGroupAddObjectBeforeMethod = ProcPtr;
  212. {$ENDC}
  213.  
  214.  
  215. CONST
  216.     kQ3XMethodType_GroupAddObjectAfter = 'gaoa';
  217.  
  218.  
  219. TYPE
  220. {$IFC TYPED_FUNCTION_POINTERS}
  221.     TQ3XGroupAddObjectAfterMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  222. {$ELSEC}
  223.     TQ3XGroupAddObjectAfterMethod = ProcPtr;
  224. {$ENDC}
  225.  
  226.  
  227. CONST
  228.     kQ3XMethodType_GroupSetPositionObject = 'gspo';
  229.  
  230.  
  231. TYPE
  232. {$IFC TYPED_FUNCTION_POINTERS}
  233.     TQ3XGroupSetPositionObjectMethod = FUNCTION(group: TQ3GroupObject; gPos: TQ3GroupPosition; obj: TQ3Object): TQ3Status; C;
  234. {$ELSEC}
  235.     TQ3XGroupSetPositionObjectMethod = ProcPtr;
  236. {$ENDC}
  237.  
  238.  
  239. CONST
  240.     kQ3XMethodType_GroupRemovePosition = 'grmp';
  241.  
  242.  
  243. TYPE
  244. {$IFC TYPED_FUNCTION_POINTERS}
  245.     TQ3XGroupRemovePositionMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition): TQ3Object; C;
  246. {$ELSEC}
  247.     TQ3XGroupRemovePositionMethod = ProcPtr;
  248. {$ENDC}
  249.  
  250. {
  251.  *    Searching methods - OPTIONAL - default uses above methods
  252.  }
  253.  
  254. CONST
  255.     kQ3XMethodType_GroupGetFirstPositionOfType = 'gfrt';
  256.  
  257.  
  258. TYPE
  259. {$IFC TYPED_FUNCTION_POINTERS}
  260.     TQ3XGroupGetFirstPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  261. {$ELSEC}
  262.     TQ3XGroupGetFirstPositionOfTypeMethod = ProcPtr;
  263. {$ENDC}
  264.  
  265.  
  266. CONST
  267.     kQ3XMethodType_GroupGetLastPositionOfType = 'glst';
  268.  
  269.  
  270. TYPE
  271. {$IFC TYPED_FUNCTION_POINTERS}
  272.     TQ3XGroupGetLastPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  273. {$ELSEC}
  274.     TQ3XGroupGetLastPositionOfTypeMethod = ProcPtr;
  275. {$ENDC}
  276.  
  277.  
  278. CONST
  279.     kQ3XMethodType_GroupGetNextPositionOfType = 'gnxt';
  280.  
  281.  
  282. TYPE
  283. {$IFC TYPED_FUNCTION_POINTERS}
  284.     TQ3XGroupGetNextPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  285. {$ELSEC}
  286.     TQ3XGroupGetNextPositionOfTypeMethod = ProcPtr;
  287. {$ENDC}
  288.  
  289.  
  290. CONST
  291.     kQ3XMethodType_GroupGetPrevPositionOfType = 'gpvt';
  292.  
  293.  
  294. TYPE
  295. {$IFC TYPED_FUNCTION_POINTERS}
  296.     TQ3XGroupGetPrevPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  297. {$ELSEC}
  298.     TQ3XGroupGetPrevPositionOfTypeMethod = ProcPtr;
  299. {$ENDC}
  300.  
  301.  
  302. CONST
  303.     kQ3XMethodType_GroupCountObjectsOfType = 'gcnt';
  304.  
  305.  
  306. TYPE
  307. {$IFC TYPED_FUNCTION_POINTERS}
  308.     TQ3XGroupCountObjectsOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR nObjects: UInt32): TQ3Status; C;
  309. {$ELSEC}
  310.     TQ3XGroupCountObjectsOfTypeMethod = ProcPtr;
  311. {$ENDC}
  312.  
  313.  
  314. CONST
  315.     kQ3XMethodType_GroupEmptyObjectsOfType = 'geot';
  316.  
  317.  
  318. TYPE
  319. {$IFC TYPED_FUNCTION_POINTERS}
  320.     TQ3XGroupEmptyObjectsOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType): TQ3Status; C;
  321. {$ELSEC}
  322.     TQ3XGroupEmptyObjectsOfTypeMethod = ProcPtr;
  323. {$ENDC}
  324.  
  325.  
  326. CONST
  327.     kQ3XMethodType_GroupGetFirstObjectPosition = 'gfop';
  328.  
  329.  
  330. TYPE
  331. {$IFC TYPED_FUNCTION_POINTERS}
  332.     TQ3XGroupGetFirstObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  333. {$ELSEC}
  334.     TQ3XGroupGetFirstObjectPositionMethod = ProcPtr;
  335. {$ENDC}
  336.  
  337.  
  338. CONST
  339.     kQ3XMethodType_GroupGetLastObjectPosition = 'glop';
  340.  
  341.  
  342. TYPE
  343. {$IFC TYPED_FUNCTION_POINTERS}
  344.     TQ3XGroupGetLastObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  345. {$ELSEC}
  346.     TQ3XGroupGetLastObjectPositionMethod = ProcPtr;
  347. {$ENDC}
  348.  
  349.  
  350. CONST
  351.     kQ3XMethodType_GroupGetNextObjectPosition = 'gnop';
  352.  
  353.  
  354. TYPE
  355. {$IFC TYPED_FUNCTION_POINTERS}
  356.     TQ3XGroupGetNextObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  357. {$ELSEC}
  358.     TQ3XGroupGetNextObjectPositionMethod = ProcPtr;
  359. {$ENDC}
  360.  
  361.  
  362. CONST
  363.     kQ3XMethodType_GroupGetPrevObjectPosition = 'gpop';
  364.  
  365.  
  366. TYPE
  367. {$IFC TYPED_FUNCTION_POINTERS}
  368.     TQ3XGroupGetPrevObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  369. {$ELSEC}
  370.     TQ3XGroupGetPrevObjectPositionMethod = ProcPtr;
  371. {$ENDC}
  372.  
  373. {
  374.  *    Group Position Methods
  375.  *    
  376.  }
  377.  
  378. CONST
  379.     kQ3XMethodType_GroupPositionSize = 'ggpz';
  380.  
  381.  
  382. TYPE
  383.     TQ3XMethodTypeGroupPositionSize        = UInt32;
  384.  
  385. CONST
  386.     kQ3XMethodType_GroupPositionNew = 'ggpn';
  387.  
  388.  
  389. TYPE
  390. {$IFC TYPED_FUNCTION_POINTERS}
  391.     TQ3XGroupPositionNewMethod = FUNCTION(gPos: UNIV Ptr; object: TQ3Object; initData: UNIV Ptr): TQ3Status; C;
  392. {$ELSEC}
  393.     TQ3XGroupPositionNewMethod = ProcPtr;
  394. {$ENDC}
  395.  
  396.  
  397. CONST
  398.     kQ3XMethodType_GroupPositionCopy = 'ggpc';
  399.  
  400.  
  401. TYPE
  402. {$IFC TYPED_FUNCTION_POINTERS}
  403.     TQ3XGroupPositionCopyMethod = FUNCTION(srcGPos: UNIV Ptr; dstGPos: UNIV Ptr): TQ3Status; C;
  404. {$ELSEC}
  405.     TQ3XGroupPositionCopyMethod = ProcPtr;
  406. {$ENDC}
  407.  
  408.  
  409. CONST
  410.     kQ3XMethodType_GroupPositionDelete = 'ggpd';
  411.  
  412.  
  413. TYPE
  414. {$IFC TYPED_FUNCTION_POINTERS}
  415.     TQ3XGroupPositionDeleteMethod = PROCEDURE(gPos: UNIV Ptr); C;
  416. {$ELSEC}
  417.     TQ3XGroupPositionDeleteMethod = ProcPtr;
  418. {$ENDC}
  419.  
  420. {
  421.  *    View Drawing Helpers
  422.  *    
  423.  *    TQ3XGroupStartIterateMethod
  424.  *
  425.  *        Pass back *object = NULL to NOT call EndIterate iterate
  426.  *        Pass back *object != NULL to draw object
  427.  *         (other side will pass it to EndIterate for deletion!)
  428.  *
  429.  *        *iterator is uninitialized, use for iteration state. Caller should 
  430.  *         ignore it.
  431.  *    
  432.  *    TQ3XGroupEndIterateMethod
  433.  *    
  434.  *        *object is previous object, dispose it or play with it.
  435.  *        Pass back NULL when last iteration has occurred
  436.  *        *iterator is previous value, use for iteration state Caller should 
  437.  *        ignore it.
  438.  }
  439.  
  440. CONST
  441.     kQ3XMethodType_GroupStartIterate = 'gstd';
  442.  
  443.  
  444. TYPE
  445. {$IFC TYPED_FUNCTION_POINTERS}
  446.     TQ3XGroupStartIterateMethod = FUNCTION(group: TQ3GroupObject; VAR iterator: TQ3GroupPosition; VAR object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  447. {$ELSEC}
  448.     TQ3XGroupStartIterateMethod = ProcPtr;
  449. {$ENDC}
  450.  
  451.  
  452. CONST
  453.     kQ3XMethodType_GroupEndIterate = 'gitd';
  454.  
  455.  
  456. TYPE
  457. {$IFC TYPED_FUNCTION_POINTERS}
  458.     TQ3XGroupEndIterateMethod = FUNCTION(group: TQ3GroupObject; VAR iterator: TQ3GroupPosition; VAR object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  459. {$ELSEC}
  460.     TQ3XGroupEndIterateMethod = ProcPtr;
  461. {$ENDC}
  462.  
  463. {
  464.  *    IO  Helpers
  465.  *    
  466.  *    TQ3XGroupEndReadMethod
  467.  *        Called when a group has been completely read. Group should perform
  468.  *        validation and clean up any reading caches.
  469.  }
  470.  
  471. CONST
  472.     kQ3XMethodType_GroupEndRead    = 'gerd';
  473.  
  474.  
  475. TYPE
  476. {$IFC TYPED_FUNCTION_POINTERS}
  477.     TQ3XGroupEndReadMethod = FUNCTION(group: TQ3GroupObject): TQ3Status; C;
  478. {$ELSEC}
  479.     TQ3XGroupEndReadMethod = ProcPtr;
  480. {$ENDC}
  481.  
  482. FUNCTION Q3XGroup_GetPositionPrivate(group: TQ3GroupObject; position: TQ3GroupPosition): Ptr; C;
  483.  
  484.  
  485.  
  486. {$ALIGN RESET}
  487. {$POP}
  488.  
  489. {$SETC UsingIncludes := QD3DGroupIncludes}
  490.  
  491. {$ENDC} {__QD3DGROUP__}
  492.  
  493. {$IFC NOT UsingIncludes}
  494.  END.
  495. {$ENDC}
  496.